package dao

// 这是 PmsProductAttribute 的全局公开dao对象，被service层调用!
var PmsProductAttributeDao = pmsProductAttributeDao{}

// 这是 pms_product_attribute表 的实体类
type PmsProductAttribute struct {
	FilterType                 int32  `json:"filter_type" form:"filter_type" v:"filter_type"`                   // 分类筛选样式：0;普通；1;颜色
	HandleAddStatus            int32  `json:"handle_add_status" form:"handle_add_status" v:"handle_add_status"` // 是否支持手动新增；0;不支持；1;支持
	Id                         int64  `json:"id" form:"id" v:"id"`
	InputList                  string `json:"input_list" form:"input_list" v:"input_list"` // 可选值列表，以逗号隔开
	InputType                  int32  `json:"input_type" form:"input_type" v:"input_type"` // 属性录入方式：0;手工录入；1;从列表中选取
	Name                       string `json:"name" form:"name" v:"name"`
	ProductAttributeCategoryId int64  `json:"product_attribute_category_id" form:"product_attribute_category_id" v:"product_attribute_category_id"` // 这是一个逻辑外键,关联pms_product_attribute_category(id)
	RelatedStatus              int32  `json:"related_status" form:"related_status" v:"related_status"`                                              // 相同属性产品是否关联；0;不关联；1;关联
	SearchType                 int32  `json:"search_type" form:"search_type" v:"search_type"`                                                       // 检索类型；0;不需要进行检索；1;关键字检索；2;范围检索
	SelectType                 int32  `json:"select_type" form:"select_type" v:"select_type"`                                                       // 属性选择类型：0;唯一；1;单选；2;多选
	Sort                       int32  `json:"sort" form:"sort" v:"sort"`                                                                            // 排序字段：最高的可以单独上传图片
	Types                      int32  `json:"types" form:"types" v:"types"`                                                                         // 属性的类型；0;规格；1;参数
}

// 注意:这是 PmsProductAttribute 的私有dao对象，只能在dao层内使用!
type pmsProductAttributeDao struct {
	InsertTemplate     func(arg PmsProductAttribute) (int64, error)                     //插入一条记录
	UpdateTemplate     func(arg PmsProductAttribute) (int64, error)                     //更新一条记录
	DeleteTemplate     func(ids []int64) (int64, error)                                 `args:"ids"` //根据传入的主键删除一条记录
	SelectTemplate     func(id int64) (PmsProductAttribute, error)                      `args:"id"`  //根据传入的主键获取一条记录
	List               func(arg PmsProductAttributeList) ([]PmsProductAttribute, error) //模糊分页查询
	GetProductAttrInfo func(id int64) (ProductAttrInfo, error)
}

/*
// 这是 pms_product_attribute 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type PmsProductAttributePostman struct {
filter_type
handle_add_status
id
input_list
input_type
name
product_attribute_category_id
related_status
search_type
select_type
sort
types

}*/

// 这是 pms_product_attribute 表的批量请求参数
type PmsProductAttributeReq struct {
	List []PmsProductAttribute `json:"list" form:"list"`
}

type PmsProductAttributeList struct {
	Cid   int64 `json:"cid" form:"cid"`
	Types int32 `json:"types" form:"types"` //0表示属性，1表示参数
	Page
}

//商品分类对应属性信息
type ProductAttrInfo struct {
	AttributeId         int64 `json:"attribute_id" form:"attribute_id"`                   //商品属性ID
	AttributeCategoryId int64 `json:"attribute_category_id" form:"attribute_category_id"` //商品属性分类ID
}
